/**
 * @description: 组装路由
 * 动态装载 childrenComponents文件内的子路由
 */

export default function assembleRouter() {
  const childrenObj = {};                                       // 子路由对象
  const context = import.meta.globEager("@/views/*/components/*.vue"); // TODO 拿到文件集合 【globEager()只支持固定文本，不支持变量形式】
  Object.entries(context).forEach(item => {                     // 将文件转为可迭代类数组,循环
    const regex = /^\/src\/views\/([^\/]+)\/components\/([^\/]+)\.vue$/;
    const match = item[0].match(regex);                         // 取出文件名，[文件名, test，welCome]
    childrenObj[match[1]] ?? ( childrenObj[match[1]] = []);     // 判断是否存在属性值
    childrenObj[match[1]].push({                                // 组装将路由添加进路由对象的数组中
      path: `${match[2]}`,
      component: () => import(`@/views/${match[1]}/components/${match[2]}.vue`),
    })
  });
  return childrenObj;
  /*
    最终返回 {
      tool: [router1, router2, ...],
      train: [router1, router2, ...]
    }
  */ 
}
